"""
-- coding: utf-8 --
@Time : 2023/8/1
@Author : 张书译
@Describe:脚本运行
"""


import os
import unittest
import time
from BeautifulReport import BeautifulReport
import config
import yagmail
from Comm.unit.Logger import logger


class RunCase:
    def __init__(self):
        # 用例路径
        self.case_path = config.testCase

        # 报告存放路径
        self.report_path = config.ROM_REPORT_DIR

        # 日志存放路径
        self.log = config.LOG_DIR

        # 邮件发送人
        self.E_mail_people = config.E_mail

        # 文件路径
        self.delete_path = config.DATA_DIR

    def all_case(self):
        discover = unittest.defaultTestLoader.discover(self.case_path, pattern="test*.py", top_level_dir=None)
        return discover

    def main(self):
        # 1、获取当前时间，这样便于下面的使用。
        now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))

        # 2、html报告文件路径
        filename = '汽车数字化测试报告' + str(now) + '.html'

        # 3、打开一个文件，将result写入此file中
        BeautifulReport(self.all_case()).report(filename=filename,
                                                description='汽车数字化测试用例',
                                                log_path=r'.\consequence\rom_reports',
                                                report_dir=r'.\consequence\rom_reports')

        return os.path.join(self.report_path, filename)

    def mail(self, report):
        """自动发送邮件"""
        # 链接邮箱服务器
        yag = yagmail.SMTP(user="zsymtyxyr@163.com", password="zsyj.2236336", host='smtp.163.com')

        # 邮箱正文
        contents = ['这是自动化接口报告', '请注意查收！', '详细信息都在附件中']

        # 发送邮件
        # yag.send('411916115@qq.com', 'subject', contents)

        # 发送邮件
        yag.send(self.E_mail_people, '自动化测试接口报告', contents, [report])

    def run(self):
        """运行主体"""
        report = self.main()
        print(report)
        self.mail(report)
        logger.debug(f"邮件已经发送到{self.E_mail_people}")


if __name__ == '__main__':
    op = RunCase()
    op.run()
